#!/bin/bash
source /etc/profile
# 解决生成的文件大小为0
echo '##########################################'
echo '###### The database is automatically backed up at 01:00 am every day ######'
echo '##########################################'
# Setting environment variables
DATE=$(date +%Y_%m_%d_%H_%M_%S)
# $(date +%Y%m%d)
# 数据库用户名
USERNAME=root
# 密码
PASSWORD=lihao123
# 要备份的数据库
arrayDB=("stock" "ruoyi")
#arrayDB=("stock_data")
# Docker容器ID
DOCKERID=mysql

#DB1=xxxx
# ubuntu 系统非 root 用户，要将备份产生的文件放到 xxx 用户所在的目录下，否则必须使用 sudo 输入管理员密码执行此脚本。
DIR=/var/local/crondata/data_backup
echo 'Get system date: ' $DATE

if [ ! -d "$DIR" ]; then
mkdir $DIR
fi
cd $DIR

echo 'backup started...' $(date "+%Y-%m-%d %H:%M:%S")
echo 'backup started...' $(date "+%Y-%m-%d")
# 备份 docker 容器中的数据库
# docker exec -it 容器名称 mysqldump -u用户名 -p密码 要备份的数据库名称 | gzip > 要打包到的文件名称

#开启循环备份

for DB in ${arrayDB[@]}; do
        echo $DB"_"$DATE
        rm -f /var/local/crondata/data_backup/$DB"_"$DATE.sql
        docker exec  $DOCKERID mysqldump -u$USERNAME -p$PASSWORD $DB > /var/local/crondata/data_backup/$DB"_"$DATE.sql
        # docker exec -it $DOCKERID mysqldump -u$USERNAME -p$PASSWORD $DB > /root/data_backup/$DB"_"$DATE.sql
done
# 上面的备份命令无效，请改为下面的备份数据库命令。
#备份sspanel数据
#rm -f /var/local/crondata/sspanel.sql
#docker exec  mysql mysqldump -uroot -plihao123  -h 38.96.139.236 sspanel   > /var/local/crondata/sspanel.sql
#docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD  $DB | gzip > /root/data_backup/$DB_$DATE.sql.gz

# 备份 直接安装在 linux 系统中的数据库
# /usr/bin/mysqldump -u$USERNAME -p$PASSWORD $DB2 | gzip > xxx_$DATE.sql.gz
# just backup the latest 7 days

# find ${DIR} -name "database_name_*.sql.gz" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1

# find ${DIR} -name "database_name_*.sql.gz" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1


#保留最新的几份文件
ReservedNum=6
date=$(date "+%Y%m%d-%H%M%S")

FileNum=$(ls -l $DIR|grep ^- |wc -l)

while(( $FileNum > $ReservedNum))
do
    OldFile=$(ls -rt $DIR| head -1)
    echo  $date "Delete File:"$OldFile
    rm -rf $DIR/$OldFile
    let "FileNum--"
done 

# mysql数据备份结束！
echo 'backup completed!' $(date "+%Y-%m-%d %H:%M:%S")